package com.ruoyi.system.vo.design;

import com.ruoyi.common.utils.StringUtils;
import com.ruoyi.system.enums.DesignStatusEnum;
import com.ruoyi.system.enums.SpaceTypeEnum;
import lombok.Data;

import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;

@Data
public class DesignProjectVO {

    /*
    设计id
     */
    private Long id;

    /**
     * 设计项目编号，如:SJ-20251027-001
     */
    private String designNo;
    /**
     * 设计师姓名
     */
    private String designerName;

    /**
     * 设计师id
     */
    private String designer;
    /**
     * 类型
     * kujiale 酷家乐
     * diy   自有
     */
    private String type;

    /**
     * 关联的项目id
     */
    private String projectNo;

    /**
     * 关联的项目名称
     */
    private String projectName;


    /**
     * 设计状态：
     * NOT_START(未开始)、DESIGNING(设计中)、FIRST_DELIVERY(一稿交付)
     * SECOND_DELIVERY(二稿交付)、COMPLETED(完成)、PAUSED(暂停)
     */
    private DesignStatusEnum designStatus;
    /**
     * 设计进度，百分比(0-100)
     */
    private Integer designProgress;

    /**
     * 客户姓名
     */
    private String customerName;


    /**
     * 项目类型：1-毛坯装修，2-老房改建，3-精装改造，4-别墅设计，5-其他
     */
    private Integer projectType;


    /**
     * 建筑面积(㎡)
     */
    private BigDecimal buildingArea;

    /**
     * 省份
     */
    private String province;

    /**
     * 城市
     */
    private String city;

    /**
     * 区/县
     */
    private String district;

    /**
     * 小区名称
     */
    private String communityName;

    /**
     * 详细地址
     */
    private String detailAddress;

    /**
     * 空间标签，多个用逗号分隔
     */
    private String spaceTags;

    /**
     * 装修风格
     */
    private String decorationStyle;

    /**
     * 方案名称
     */
    private String schemeName;

    /**
     * 设计开始时间
     */
    private LocalDate designStartTime;
    /**
     * 设计结束时间
     */
    private LocalDate designEndTime;

    /**
     * 全景图链接
     */
    private String panoramaUrl;


    /**
     * 创建时间
     */
    private LocalDateTime createdTime;

    /**
     * 更新时间
     */
    private LocalDateTime updatedTime;

    /** 临时字段：设计主图字符串（逗号分隔） */
    private String designMainImageStr;
    /**
     * 设计主图
     */
    private List<String> designMainImage;

    /** 临时字段：空间类型字符串（逗号分隔） */
    private String spaceTypeStr;
    /**
     * 空间类型
     */
    private List<SpaceTypeEnum> spaceTypes;

    /**
     * 状态备注，记录最新操作日志
     */
    private String statusRemark;

    /**
     * 推荐值
     */
    private Integer recommendeValue;

    /**
     * 是否推荐 1推荐 0不推荐
     */
    private Integer isRecommende;

    /**
     * 设计主图链接
     */
    private String mainDrawingUrl;
    // 1. 设计状态：字符串转枚举
    public void setDesignStatus(String designStatusStr) {
        this.designStatus = DesignStatusEnum.getByValue(designStatusStr);
    }

    // 2. 设计主图：字符串转List<String>
    public void setDesignMainImageStr(String designMainImageStr) {
        this.designMainImageStr = designMainImageStr;
        if (StringUtils.isBlank(designMainImageStr)) {
            this.designMainImage = Collections.emptyList();
            return;
        }
        this.designMainImage = Arrays.stream(designMainImageStr.split(","))
                .map(String::trim)
                .filter(StringUtils::isNotBlank)
                .collect(Collectors.toList());
    }

    // 3. 空间类型：字符串转List<SpaceTypeEnum>
    public void setSpaceTypeStr(String spaceTypeStr) {
        this.spaceTypeStr = spaceTypeStr;
        if (StringUtils.isBlank(spaceTypeStr)) {
            this.spaceTypes = Collections.emptyList();
            return;
        }
        this.spaceTypes = Arrays.stream(spaceTypeStr.split(","))
                .map(String::trim)
                .filter(StringUtils::isNotBlank)
                .map(SpaceTypeEnum::getByValue)  // 调用枚举的getByValue方法
                .filter(enumType -> enumType != null)  // 过滤未知类型
                .collect(Collectors.toList());
    }

}
